﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using DynamicAuditor.DTOs;

namespace DynamicAuditor.DALAuditor
{
    /// <summary>
    /// Fecha: 26-Setiembre-2010
    /// Autor: Lester Salazar Viales
    /// Descripcion: En esta clase se va a manejar todas las operaciones correspondientes a la Version de Cobit tales como: Inserción, Actualización, Eliminación
    /// y todo lo relaciona con la version de Cobit.
    /// Modificado por Kenneth el 12/10/2010
    /// </summary>
   public class clsVersionCobitMg
    {
       //Declaracion de la varaiable tipo datacontext que vamos a utilizar en toda la clase.
       DynamicAuditorDataContext bd = new DynamicAuditorDataContext();


        public clsVersionCobitMg()
        { 
        
        }



       


        //--------------------------------------------------------------------------------------------------------------------------


        public List<DTOs.dtoVersionCobit> ObtenerListaVersionCobit()
        {
            int i = 0;
            List<DTOs.dtoVersionCobit> versioncobit = new List<DTOs.dtoVersionCobit>();

            try

            {
               var vers = (from p in bd.VERSION_COBITs 
                           select p).ToList();

               foreach (VERSION_COBIT version in vers)
               {
                   versioncobit.Add(new dtoVersionCobit());
                   versioncobit[i].idVersionCobit  = version.idVersionCobit;
                   versioncobit[i].Descripcion = version.Descripcion;
                   versioncobit[i].Version= version.Version;
                   versioncobit[i].Activa = bool.Parse(version.Activa.ToString());
                    
                   i++;
               }

            }
            catch(Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }
            

            return versioncobit;
        }

        //--------------------------------------------------------------------------------------------------------------------------


        public List<DTOs.dtoVersionCobit> ObtenerListaVersionCobitActivas()
        {
            int i = 0;
            List<DTOs.dtoVersionCobit> versioncobit = new List<DTOs.dtoVersionCobit>();

            try
            {
                var vers = (from p in bd.VERSION_COBITs
                            where p.Activa==true 
                            select p).ToList();

                foreach (VERSION_COBIT version in vers)
                {
                    versioncobit.Add(new dtoVersionCobit());
                    versioncobit[i].idVersionCobit = version.idVersionCobit;
                    versioncobit[i].Descripcion = version.Descripcion;
                    versioncobit[i].Version = version.Version;
                    versioncobit[i].Activa = bool.Parse(version.Activa.ToString());

                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }


            return versioncobit;
        }



        //--------------------------------------------------------------------------------------------------------------------------

        public DTOs.dtoVersionCobit  ObtenerVersionPorId(int versionid)
        {
            DTOs.dtoVersionCobit versioncobit = new DynamicAuditor.DTOs.dtoVersionCobit();

            try
            {
                VERSION_COBIT vers = bd.VERSION_COBITs.Single(p => p.idVersionCobit == versionid);

                versioncobit.idVersionCobit = vers.idVersionCobit;
                versioncobit.Descripcion = vers.Descripcion;
                versioncobit.Version = vers.Version;
                versioncobit.Activa = bool.Parse(vers.Activa.ToString());


            }
            catch(Exception ex)
            {
                versioncobit = null;
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }

            return versioncobit;
        }
        //--------------------------------------------------------------------------------------------------------------------------



        public int UpdateVersionCobit(DTOs.dtoVersionCobit versioncobit)
        {

            //Se retorna un 1 si el proceso se hizo correctamente de lo contrario se retorna un 0

            int x =0;

            try
            {
                VERSION_COBIT vers = bd.VERSION_COBITs.Single(p => p.idVersionCobit == versioncobit.idVersionCobit);
                vers.Descripcion = versioncobit.Descripcion;
                vers.Activa = versioncobit.Activa;
                vers.Version = versioncobit.Version;

                bd.SubmitChanges();
                x = 1;

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error actualizando los datos . " + ex.Message);
                x = 0;
            }
          
            return x; 

        }

        //--------------------------------------------------------------------------------------------------------------------------



        public int InsertVersionCobit(DTOs.dtoVersionCobit versioncobit)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;
            VERSION_COBIT vers = new VERSION_COBIT();

            try
            {
                vers.Descripcion = versioncobit.Descripcion;
                vers.Activa = versioncobit.Activa;
                vers.Version = versioncobit.Version;
                //Se procede a insertar la informacion del cliente
                bd.VERSION_COBITs.InsertOnSubmit(vers);
                bd.SubmitChanges();
                x = 1;
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo insertar la versión de cobit. " + ex.Message);
                x = 0;
            }
           

            return x;
        }



        //--------------------------------------------------------------------------------------------------------------------------


        public int DeleteVersionCobit(DTOs.dtoVersionCobit versioncobit)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;

            try
            {
                var cli = bd.VERSION_COBITs.Single(p => p.idVersionCobit == versioncobit.idVersionCobit);

                bd.VERSION_COBITs.DeleteOnSubmit(cli);
                bd.SubmitChanges();
                x=1;
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo borrar la versión de cobit " + ex.Message);
                x = 0;
            }
          
       
            return x;

        }


        //--------------------------------------------------------------------------------------------------------------------------


    }
}
